home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 July / EnigmA AMIGA RUN 20 (1997)(G.R. Edizioni)(IT)[!][issue 1997-07 & 08][EAR-CD IV].iso / earcd / comm / ums / pint.lha / UMS / Rexx / MausMitglied.pint < prev    next >
Text File  |  1997-03-04  |  8KB  |  268 lines

  1. /****** MausMitglied.pint ************************************************************
  2.  
  3.     NAME
  4.       $VER: MausMitglied.pint 1.6 (29.3.96) by Olaf Peters
  5.  
  6.     Updated for PINT (22.2.97):
  7.      Magnus Heino (nd95mho@Student.HGS.SE)
  8.  
  9.           *** This script is only useful in the german MausNet (R) ***
  10.  
  11.     AUTHOR
  12.       Olaf Peters
  13.       Kulmer Str. 7
  14.       28237 Bremen
  15.  
  16.       op@hb2.maus.de / olf@informatik.uni-bremen.de
  17.  
  18.     SYNOPSIS
  19.       Unterstützt die Mitglieder-/Chefverwaltung in Mausgruppen.
  20.  
  21.     FUNCTION
  22.       Dieses Script ermöglicht es aus PINT's Nachrichtenfenster heraus
  23.       ein Mitglied in einer Mausgruppe einzutragen bzw. auszutragen oder
  24.       auch als Chef zu setzen (Vorausgesetzt man ist Sysop in der Maus).
  25.  
  26.       Das Script ist dabei so flexibel, daß es die nötigen Angaben
  27.       weitestgehend automatisch erkennt. Das neue Mitglied (bzw. der neue
  28.       Chef) muß dabei immer der Absender der gerade im Nachrichtenfenster
  29.       angezeigten Mitteilung sein, dabei spielt es keine Rolle, ob es sich
  30.       um eine PM oder um eine Nachricht in einer Gruppe handelt. Bei
  31.       Gruppenmitteilungen fragt das Script, ob es für den Absender auch um
  32.       jene Gruppe handelt (wichtig bei Austragen/Chef setzen) und erlaubt
  33.       ggf. eine Änderung der Gruppe.
  34.  
  35.       Das Script fragt - nach eventueller Vervollständigung der Angaben -
  36.       welche Aktion ausgeführt werden soll (Eintragen, Austragen, Chef
  37.       setzen) und schreibt danach die Mauscontrol-Mitteilung an den
  38.       Exporter aus dessen Maus das neue Mitglied schreibt. Z.B. schreibt
  39.       "Heike Musterfrau, hb2.maus", daß sie gerne in BIETE aufgenommen
  40.       werden möchte. Das Script schickt die Mauscontrol-Nachricht dann
  41.       (entsprechende Bestätigung vorausgesetzt) an "maus.hb2, hb2.maus".
  42.  
  43.     CONFIGURATION
  44.       Im ersten Teil dieses Script kann der Mailfolder eingestellt werden,
  45.       in dem die ///mauscontrol-Nachricht abgelegt werden soll.
  46.  
  47.     NEEDS
  48.       Für die Benutzung des Scripts muß folgendes installiert sein:
  49.  
  50.       · mindestens PINT v2.0 (wegen des ARexx-Ports)
  51.       · mindestens UMSServer v11.20+ (wegen des UMSDupAccount Tricks für
  52.         normale Logins)
  53.       · reqtools.library und reqrexxtools.library (für die Requester)
  54.  
  55.     BUGS
  56.       Keine bekannt. Sollten welche auftauchen, bitte mailen (s.o.)
  57.  
  58.     $HISTORY:
  59.  
  60.      29.3.96  1.6   : · Controlmail wird in das Artikelfenster eingetragen
  61.      10.9.95  1.5   : · Controlmail wird optional in einem Folder abgelegt
  62.                       · die Controlmail wird nicht mehr in die Maus
  63.                         geschickt, sondern tatsächlich nur an den lokalen
  64.                         UMS-Exporter.
  65.      27.6.95  1.4   : INFO SCREEN statt GetPubScreenName -> IN 1.3b9
  66.      27.3.95  1.3   : PubScreenname wird jetzt von IntuiNews geholt (beta 6)
  67.      25.3.95  1.2   : · Anpassung an IntuiNews v1.3b5
  68.                       · Bug beseitigt, der die ///mauscontrol im Infile
  69.                         verhunzte: ein LF hinter dem 'G'-Kommando hat's
  70.                         gebracht.
  71.                       · es wird überprüft, ob es den Alias 'maus.xy' gibt.
  72.                         Damit sollten Unfugmails eingeschränkt werden?
  73.      16.3.95  1.1   : Mitglied eintragen funktionierte irgendwie nicht?!
  74.      14.3.95  1.0   : initial
  75.  
  76. ******************************************************************************
  77. *
  78. */
  79.  
  80. /*
  81.  * ------------------------------------------------------------------------
  82.  *
  83.  *  Hier den Folder eintragen, in den die ///mauscontrol-Nachricht abgelegt
  84.  *  werden soll.
  85.  *
  86.  *  z.B.
  87.  *
  88.  * ctrlFolder = "Maus.Control"
  89.  *
  90.  */
  91.  
  92. ctrlFolder = ""
  93.  
  94. /* ------------------------------------------------------------------------ */
  95.  
  96.  
  97.  
  98. ProgramName = "MausMitglied.rexx"
  99. lf = '0a'x
  100.  
  101. eztags = "rtez_flags=ezreqf_centertext"
  102. rstags = "rtgs_flags=gsreqf_centertext"
  103.  
  104. /*** Startup ***/
  105.  
  106. options results
  107.  
  108. RC = 0
  109. account = 0
  110.  
  111. signal on BREAK_C
  112. signal on BREAK_D
  113. signal on BREAK_E
  114. signal on BREAK_F
  115. signal on ERROR
  116. signal on HALT
  117. signal on IOERR
  118. signal on SYNTAX
  119.  
  120. /*/// "Libs einbinden" */
  121.  
  122. if ~show(l, "rexxreqtools.library") then
  123.   if ~addlib("rexxreqtools.library", 0, -30, 0) then do
  124.     say "rexxreqtools.library konnte nicht geöffnet werden!" ;
  125.     exit(20) ;
  126.   end
  127.  
  128. libname = "ums.library"
  129. if ~show("L", "ums.library") then do
  130.   if ~addlib("ums.library", 0, -210, 8) then do
  131.     say "ums.library not found!"
  132.     exit(20)
  133.   end
  134. end
  135. call UMSInitConsts
  136.  
  137. /*\\\*/
  138.  
  139. /*/// "Login duplizieren" */
  140.  
  141. 'info screen'
  142. screen = result
  143.  
  144. eztags = eztags "rt_pubscrname='" || screen || "'"
  145. rstags = rstags "rt_pubscrname='" || screen || "'"
  146.  
  147. 'status'
  148.  
  149. if result ~= "MESSAGE" then do
  150.     rtezrequest("Du mußt im Nachrichtenfenster sein,"|| lf || "um dieses Script auszuführen!", "_Abbruch", ProgramName, eztags)
  151.     call HALT
  152. end
  153.  
  154. 'getaccount'
  155.  
  156. if (result = "RESULT") | (result = 0) then do
  157.     rtezrequest("Script konnte keinen Account bekommen!", "_Abbruch", ProgramName, eztags)
  158.     call HALT
  159. end ; else
  160.     login = result
  161.  
  162. account = UMSLogin("", login, "")
  163. if account = 0 then do
  164.     rtezrequest("Konnte Account nicht duplizieren!", "_Abbruch", ProgramName, eztags)
  165.     call HALT
  166. end
  167.  
  168. /*\\\*/
  169.  
  170. 'getmsgnum'
  171.  
  172. if result = "RESULT" then do
  173.     rtezrequest("No message no fun! :-)", "_Abbruch", ProgramName, eztags)
  174.     call HALT
  175. end ; else
  176.     msgnum = result
  177.  
  178. drop msg.
  179. if ~UMSReadMsgHeader(account, msgnum, msg., true) then do
  180.     rtezrequest("Nachricht konnte nicht gelesen werden!", "_Abbruch", ProgramName, eztags)
  181.     call HALT
  182. end
  183.  
  184. if upper(right(msg.UMSCODE_FromAddr, 5)) ~= ".MAUS" then do
  185.     rtezrequest(msg.UMSCODE_FromName "hat keine Mausadresse.", "_Abbruch", ProgramName, eztags)
  186.     call HALT
  187. end
  188.  
  189. parse var msg.UMSCODE_FromAddr maus ".maus"
  190. if UMSReadConfigUserName(account, "maus." || maus) = "" then do
  191.     rtezrequest("Für die Maus" maus "gibt's hier keinen Exporter!", "_Abbruch", ProgramName, eztags)
  192.     call HALT
  193. end
  194.  
  195. if msg.UMSCODE_Group = "MSG." || UMSCODE_Group then do
  196.     parse var msg.UMSCODE_ToName Chef Gruppe .
  197.     reqgrp =  (upper(Chef) ~= "CHEF")
  198. end ; else do
  199.     parse var msg.UMSCODE_Group "maus." . "." gruppe
  200.     if gruppe = "" then do
  201.         reqgrp = true
  202.     end ; else
  203.         reqgrp = (rtezrequest("Nachricht in Gruppe" gruppe || "." || lf || "Geht's auch um diese Gruppe?", "_Ja|_Nein", ProgramName, eztags) = 0)
  204. end
  205.  
  206. if reqgrp then do
  207.     gruppe = rtgetstring("", "User:" msg.UMSCODE_FromName || lf || lf || "Um welche Gruppe geht's?", ProgramName, "_Okay|_Abbruch", rstags, rtres)
  208.     if rtres = 0 then
  209.         call HALT
  210. end
  211.  
  212. wahl = rtezrequest("Gruppe:" gruppe || lf || lf || "Was soll mit" msg.UMSCODE_FromName "passieren?", "_Eintragen|A_ustragen|Als _Chef|_Abbruch", ProgramName, eztags)
  213.  
  214. select
  215.     when wahl = 1 then
  216.         op = ">"
  217.     when wahl = 2 then
  218.         op = "<"
  219.     when wahl = 3 then
  220.         op = "="
  221.     otherwise
  222.         call HALT
  223. end
  224.  
  225. drop ctrl.
  226. ctrl.UMSCODE_ToName = "maus." || maus
  227. ctrl.UMSCODE_Subject = "///mauscontrol"
  228. ctrl.UMSCODE_MsgText = "GU" || msg.UMSCODE_FromName || op || gruppe || lf
  229. ctrl.UMSCODE_Folder  = ctrlFolder
  230.  
  231. msgnum = UMSWriteMsg(account, ctrl.)
  232. if msgnum = 0 then do
  233.     rtezrequest("Mauscontrol-Nachricht konnte nicht geschrieben werden:" || lf || "UMS Error #" || UMSErrNum(account) || ":" UMSErrTxt(account), "_Abbruch", ProgramName, eztags)
  234. end ; else
  235.     'addmsg' msgnum
  236.  
  237. /*/// "Final cleanup" */
  238.  
  239. BREAK_C:
  240. BREAK_D:
  241. BREAK_E:
  242. BREAK_F:
  243. ERROR:
  244. HALT:
  245. IOERR:
  246. SYNTAX:
  247.  
  248. /*** Logout ***/
  249.  
  250. if account ~= 0 then do
  251.   call UMSLogout(account)
  252.   account = 0
  253. end
  254.  
  255. exit 0
  256.  
  257. /*** Support ***/
  258.  
  259. CheckErr: procedure expose account
  260.   err = UMSErrNum(account)
  261.   if err ~= 0 then do
  262.     rtezrequest("UMS Error #" || err || ": " || UMSErrTxt(account))
  263.   end
  264. return
  265.  
  266. /*\\\*/
  267.  
  268.